<%
require 'src/pacote'
require "src/historico"
require 'src/link'
require "src/verbose"
require 'cgi'


$erro = false
$backtrace = nil

def erro_fatal %>
  <html>
    <head>
      <meta http-equiv="Refresh" content="0;url=error.rhtml"/>
    </head>
  </html> <%
  Verbose.to_log "Erro fatal em [save_pacote]"
end

def show_response
  begin
    cgi = CGI.new
    a_params = cgi.params
    params_links = a_params["package"][0].to_a
    pacote = Pacote.new(a_params["name"])
    pacote.prioridade = a_params["prioridade"][0].to_i
    pacote.senha = a_params["senha"][0]
    pacote.descricao = a_params["descricao"][0]
    pacote.url_fonte = a_params["url_fonte"][0]
    pacote.legenda = a_params["legenda"][0]
    links_validos = Array.new
    links_duplicados = Array.new
    links_db = Link.select_full
    params_links.each do |linha|
      linha.strip!
      if linha =~ /.*(http:\/\/\S*\.rapidshare\.com\/\S+\/\S+).*/
        links_validos.push linha.scan(/.*(http:\/\/\S*rapidshare\.com\/\S+\/\S+).*/)[0][0]
      elsif linha =~ /.*(http:\/\/\S*\.megaupload\.com\/\S+).*/
        links_validos.push linha.scan(/.*(http:\/\/\S*megaupload\.com\/\S+).*/)[0][0]
      elsif linha =~ /.*(http:\/\/\S*\.4shared\.com\/\S+).*/
        links_validos.push linha.scan(/.*(http:\/\/\S*\.4shared\.com\/\S+).*/)[0][0]
      end
    end
    # Verifica se links_db é válido
    if links_db == nil
      $erro = true
      $backtrace = "Não foi possível obter todos os links do banco de dados."
      return nil
    end

    # Verifica se há links válidos
    if links_validos.size == 0
      $erro = true
      $backtrace = "Não foi possível detectar links válidos."
      return nil
    end

    # Verifica links duplicados
    links_validos.each do |link|
      links_db.each do |db|
        if link == db
          links_duplicados.push db
        end
      end
    end

    retorna = Array.new

    pacote.nome = pacote.nome.to_s
    if pacote.nome == "" or pacote.nome == nil
      short_link = links_validos[0].split("/")
      path = short_link[short_link.size - 1]
      pacote.nome = path.gsub(/\.part\d+.\S+$/, "").gsub(/\.(rar|zip|\d+|htm|html)$/, "")
    end

    # Só aceita o pacote se não houver nenhum link duplicado
    unless links_duplicados.size > 0
      if pacote.save == nil
        $erro = true
        $backtrace = "Inserção de pacote inválida."
        return nil
      end
      if pacote.save_links(links_validos) == nil
        $erro = true
        $backtrace = "Inserção de links no pacote inválida."
        return nil
      end
    end
    retorna.push(pacote, links_validos, links_duplicados)
    return retorna
  rescue Exception => err
    $erro = true
    $backtrace = err.backtrace.join("<br\/>")
    Verbose.to_log "Erro ao responder add_pacote: #{err.message}"
    return nil
  end
end

begin
  show = show_response
  unless show == nil
    pacote = show[0]
    links = show[1]
    links_duplicados = show[2]
  end
rescue Exception
  erro_fatal
end

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License

Name       : Professional
Description: A two-column, fixed-width design with dark color scheme background.
Version    : 1.0
Released   : 20081230

-->

<html>
  <head>
    <link rel="icon" href="images/favicon.png" type="image/x-icon" />
    <link rel="shortcut icon" href="images/favicon.png" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>RS-Online ~ version 1.0b ~ Powered by eRuby</title>
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
  </head>
  <body>

    <div id="wrapper">

      <div id="header">
        <div id="logo">
          <h1><a href="#">RS-Online Beta</a></h1>
          <p>version 1.0b ~ Powered by eRuby</p>
        </div>
        <!-- end #logo -->
        <div id="menu">
          <ul>
            <li class="active"><a href="index.rhtml">Home</a></li>
            <li><a href="#">About Us</a></li>
            <li><a href="#">Products</a></li>
            <li><a href="#">Services</a></li>
            <li><a href="#">Contact Us</a></li>
          </ul>
        </div>
        <!-- end #menu -->
      </div>
      <!-- end #header -->
      <div id="page">
        <!--<div id="header-pic"></div>-->
        <div id="content">
          <div class="post">
            <% if $erro %>
              <h1 class="title">Ocorreu um erro.</h1>
              <div class="entry">
                <p>
                  Não foi possível completar a operação. Por favor, tente novamente.<br/>
                  Se o erro persistir, contate o adminstrador.
                </p>
                <p>
                  <b>Erro: </b><br/>
                  <%= $backtrace %>
                </p>
              </div>
            <% elsif links_duplicados.size > 0 %>
              <h1 class="title">Link duplicado foi detectado.</h1>
              <div class="entry">
                <p>
                  <% if links_duplicados.size > 1 %>
                    Os seguintes links já foram anteriormente adicionados ao banco de dados.
                  <% else %>
                    O seguinte link já foi anteriormente adicionado ao banco de dados.
                  <% end %>
                </p>
                <p>
                  <% links_duplicados.each do |link| %>
                    <%= link %><br/>
                  <% end %>
                </p>
                <p><b>O pacote somente será salvo quando não houver link duplicado.</b></p>
                <p><a href="javascript:history.go(-1)">Voltar</a></p>
              </div>
            <% else %>
              <h1 class="title"><%= pacote.nome %></h1>
              <div class="entry">
                <p>
                  Pacote <%= pacote.nome %> foi inserido na lista de pacotes. <br/>
                  <%
                  begin
                    Verbose.to_public "Pacote #{pacote.nome} foi inserido na lista de pacotes."
                  rescue
                  end
                %>
                </p>
                <p>
                  <%
                  links.each do |link| %>
                    <%= link %><br/>
                  <%
                  end %>
                </p>
              </div>
              <div class="meta">
                <p class="links"><% print "Pacote adicionado." %></p>
              </div>
            <% end %>
          </div>
        </div>
        <!-- end #content -->
        <div id="sidebar">
          <div id="sidebar-bgtop"></div>
          <div id="sidebar-content">
            <div id="sidebar-bgbtm">
              <ul>
                <li id="search">
                  <h2>Search</h2>
                  <form method="get" action="">
                    <fieldset>
                      <input type="text" id="s" name="s" value="" />
                      <input type="submit" id="x" value="Search" />
                    </fieldset>
                  </form>
                </li>
                <li>
                  <h2>Pacotes</h2>
                  <ul>
                    <li><a href="add_pacote.rhtml"><img alt="new" src="images/package_add.png"/>&nbsp;Novo Pacote</a></li>
                    <li><a href="lista_pacotes.rhtml"><img alt="lst" src="images/drive_web.png"/>&nbsp;Lista de Pacotes</a></li>
                    <li><a href="lista_pacotes_ocultos.rhtml"><img alt="oct" src="images/safe.png"/>&nbsp;Lista de Pacotes Ocultos</a></li>
                  </ul>
                </li>
                <li>
                  <h2>Downloads</h2>
                  <ul>
                    <li><a href="#"><img alt="est" src="images/chart_bar.png"/>&nbsp;Estatística (em construção)</a></li>
                    <li><a href="log_downloads.rhtml"><img alt="log" src="images/report.png"/>&nbsp;Log de Downloads</a></li>
                  </ul>
                </li>
              </ul>
            </div>
          </div>
        </div>
        <!-- end #sidebar -->
        <div style="clear:both; margin:0;"></div>
      </div>
      <!-- end #page -->

    </div>

    <div id="footer">
      <p>&copy; 2010. All Rights Reserved. Design by Nightcrawler. RS-Online is powered by eRuby.</p>
    </div>
    <!-- end #footer -->
  </body>
</html>
